下標 ( subscript ) 是一個可以快速存取及設置值的方式,單看中文字面上可能不太清楚什麼意思,其實在前面介紹陣列 ( array ) 及字典 ( dictionary ) 時已經有接觸過,在陣列或字典名稱後面緊接著中括號 [ ],括號內填入陣列的索引值 ( index ) 或是字典的鍵 ( key ),即可存取或設置值:
下標也可以定義在類別 ( class )、結構 ( structure ) 及列舉 ( enumeration ) 中:
subscript(索引值: 索引值型別) -> 回傳型別 {
get {
//存取值的程式操作
//回傳值的型別
}
set(新設定值的名稱) {
//設定值的程式操作
}
}
與前面介紹的計算型屬性相似,可以定義為讀寫 ( getter 及 setter ),也可以定義為唯讀 ( getter )。setter 傳入的設置值名稱也可以省略,省略時會有一個內建預設的名稱 newValue。這兩種方式定義如下:
//當下標是唯獨時,可以將 get 及大括號省略掉
subscript(索引值: 索引值型別) -> 回傳值型別 {
//存取值的程式操作
//回傳值的型別
}
//省略 setter 傳入設定值的名稱,會自動產生一個新的 newValue
subscript(索引值: 索引值型別) -> 回傳值型別 {
get {
}
set {
//存取值的程式操作
//可以使用newValue來操作
}
}
下標可以定義多個索引值,可以是任意型別的參數或可變數量參數,返回值也可以是任意型別,但不能使用輸入輸出參數 ( inout ),也不能給參數設置預設值。
如上述程式,類別或結構可以定義多個下標,使用下標時會依據索引值數量及型別,自動推斷使用合適的下標。